Tunneling is often used to connect two networks through a transport network that utilizes a different protocol. For example, it is not uncommon to connect two local area networks (LANs) via the Internet via an Internet Protocol (IP) tunnel. The LANs may be layer 2 networks and the Internet is layer 3. The layers refer to layers of a network model. For example, the Open Systems Interconnection Basic Reference Model (the “OSI Model”) is a well-known, abstract description for communications and computer network protocol design, consisting of seven layers. In the OSI model, there exists a Network Layer (layer 3) and a Data Link Layer (layer 2).
The network layer provides the functional and procedural means of transferring variable length data sequences from a source to a destination by performing network routing functions. At a physical level, the data link layer provides the functional and procedural means to transfer data between individual network entities, thus allowing for the transfer of data from a source to its ultimate destination in a network. Thus, the cumulative operations performed at the data link layer allows for the transfer of data at the network level.
Referring back to the example whereby two LANs are connected via the Internet through an IP tunnel, layer 2 packets, which use media access control (MAC) addresses for routing in the LAN, are encapsulated with a layer 3 header, which use IP addresses for routing, and transmitted over the Internet in the IP tunnel to the other LAN. The tunneling involves the use of a tunneling protocol to encapsulate the payload of a packet (e.g., layer 2 packet payload) within another header (e.g., layer 3 packet header). The header contains routing information that is used to transmit the data packet through the tunnel.